package to4.client;

import java.util.ArrayList;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class ZonderVervoer2 {
	public TO4 myService;
	private ZonderHome ZH;
	public ZonderVervoer2(ZonderHome thema5){
		this.ZH = thema5;
	}

	public Panel createPage(final String ingelogdMail, final String autoMail){
		FlowPanel eindPanel = new FlowPanel();

		HorizontalPanel panel = new HorizontalPanel();
		VerticalPanel v1 = new VerticalPanel();
		Label kop = new Label("Autogegevens");
		kop.addStyleName("kopzv2");
		Label lab1 = new Label("Auto van:");
		lab1.addStyleName("standaardNaamLabel");
		Label lab2 = new Label("Merk en type auto:");
		lab2.addStyleName("standaardNaamLabel");
		Label lab3 = new Label("aantal plaatsen beschikbaar:");
		lab3.addStyleName("standaardNaamLabel");
		Label lab4 = new Label("Rijd door de volgende provincies:");
		lab4.addStyleName("standaardNaamLabel");
		Label lab5 = new Label("Reizen:");
		lab5.addStyleName("standaardNaamLabel");
		Label lab6 = new Label("Roken:");
		lab6.addStyleName("standaardNaamLabel");
		Label lab7 = new Label("Fiets mee:");
		lab7.addStyleName("standaardNaamLabel");
		v1.add(lab1);
		v1.add(lab2);
		v1.add(lab3);
		v1.add(lab4);
		v1.add(lab5);
		v1.add(lab6);
		v1.add(lab7);
		final Label l9 = new Label("");
		v1.add(l9);
		VerticalPanel v2 = new VerticalPanel();
		final Label l1 = new Label("");
		final Label l2 = new Label("");
		final Label l3 = new Label("");
		final Label l4 = new Label("");
		final Label l5 = new Label("");
		final Label l6 = new Label("");
		final Label l7 = new Label("");
		final Label l8 = new Label("");
		v2.add(l1);
		v2.add(l2);
		v2.add(l3);
		v2.add(l4);
		v2.add(l5);
		v2.add(l6);
		v2.add(l7);
		v2.add(l8);

		AsyncCallback<ArrayList<String>> metAutoGegevens = new AsyncCallback<ArrayList<String>>() {

			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onSuccess(ArrayList<String> result) {
				for(String r:result){
					String[] gesplitteResultaat = r.split("\\:\\*\\:");
					l1.setText(gesplitteResultaat[0]);
					l2.setText(gesplitteResultaat[1]);
					l3.setText(gesplitteResultaat[2]);
					l4.setText(gesplitteResultaat[3]);
					l5.setText(gesplitteResultaat[4]);
					l6.setText(gesplitteResultaat[5]);
					l7.setText(gesplitteResultaat[6]);
					if (gesplitteResultaat.length == 9) {
						l8.setText(gesplitteResultaat[8]);
						l9.setText("Commentaar:");
						l9.addStyleName("standaardNaamLabel");
					}


				}

			}


		};
		ZH.thema.myService.ZondermetAutoGegevens(autoMail, metAutoGegevens);
		VerticalPanel v3 = new VerticalPanel();
		panel.add(v1);
		panel.add(v2);
		v3.add(panel);
		Button b = new Button("Inschrijven");
		b.addStyleName("buttonzv2");
		b.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				ZH.thema.myService.isIngeschrevenBijAuto(ingelogdMail, new AsyncCallback<Boolean>(){
					@Override
					public void onFailure(Throwable caught) {
						// TODO Auto-generated method stub
					}
					@Override
					public void onSuccess(Boolean result) {
						if(result == true){
							Window.alert("U bent al ingeschreven bij een auto, schrijf u eerst uit als u zich bij een nieuwe auto wilt inschrijven");
						}
						if(result == false){
							AsyncCallback<Boolean> autoVol = new AsyncCallback<Boolean>() {

								@Override
								public void onFailure(Throwable caught) {
									// TODO Auto-generated method stub

								}

								@Override
								public void onSuccess(Boolean result) {
									if (result) {
										Window.alert("Deze is al vol, kies een andere auto");

									}
									else {

										AsyncCallback<Boolean> voegAutoToe = new AsyncCallback<Boolean>() {
											@Override
											public void onFailure(Throwable caught) {
												// TODO Auto-generated method stub
											}
											@Override
											public void onSuccess(Boolean result) {
												if(result == true){
													Window.alert("Succesvol toegevoegd aan deze auto");
													ZH.showHomeZonder(ingelogdMail);
												}
												if(result == false){
													Window.alert("Niet gelukt");
												}
											}
										};
										ZH.thema.myService.voegAutoToe(autoMail, ingelogdMail, voegAutoToe);

									}

								}

							};
							ZH.thema.myService.autoVol(autoMail, autoVol);
						}
					}
				});
			}
		});
		v3.add(b);
		eindPanel.add(kop);
		eindPanel.add(v3);
		return eindPanel;
	}
}
